package com.ruoyi.edh.mapper;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.ruoyi.edh.domain.EdhBill;
import com.ruoyi.edh.domain.EdhOrder;
import com.ruoyi.edh.domain.dto.EdhBatchShipDto;
import com.ruoyi.edh.domain.dto.EdhOrderGoodsDto;
import com.ruoyi.edh.domain.dto.EdhOrderListDto;
import com.ruoyi.edh.domain.vo.*;
import org.apache.ibatis.annotations.Param;
import org.apache.xmlbeans.impl.xb.xsdschema.Public;

/**
 * 易订购-订单Mapper接口
 *
 * @author xxx
 * @date 2020-09-03
 */
public interface EdhOrderMapper {
	/**
	 * 查询易订购-订单
	 *
	 * @param id 易订购-订单ID
	 * @return 易订购-订单
	 */
	public EdhOrder selectEdhOrderById(Long id);

	/**
	 * 查询易订购-订单列表
	 *
	 * @param edhOrder 易订购-订单
	 * @return 易订购-订单集合
	 */
	public List<EdhOrder> selectEdhOrderList(EdhOrder edhOrder);

	/**
	 * @param edhOrder
	 * @description: 查询导出excle
	 * @return: List<EdhSummaryOrderListVo>
	 * @author: 梁东宸
	 * @time: 2020/9/17 3:11 下午
	 */
	public List<EdhSummaryOrderExcleListVo> selectEdhOrderExcelList(EdhOrderListDto edhOrder);

	/**
	 * @param edhOrder
	 * @description: 查询易订货订单页面列表
	 * @return: List<EdhSummaryOrderListVo> 易订货订单页面列表
	 * @author: 梁东宸
	 * @time: 2020/9/14 11:11 上午
	 */
	public List<EdhSummaryOrderListVo> queryEdhOrderList(EdhOrderListDto edhOrder);

	/**
	 * 新增易订购-订单
	 *
	 * @param edhOrder 易订购-订单
	 * @return 结果
	 */
	public int insertEdhOrder(EdhOrder edhOrder);

	/**
	 * 修改易订购-订单
	 *
	 * @param edhOrder 易订购-订单
	 * @return 结果
	 */
	public int updateEdhOrder(EdhOrder edhOrder);

	/**
	 * 删除易订购-订单
	 *
	 * @param id 易订购-订单ID
	 * @return 结果
	 */
	public int deleteEdhOrderById(Long id);

	/**
	 * 批量删除易订购-订单
	 *
	 * @param ids 需要删除的数据ID
	 * @return 结果
	 */
	public int deleteEdhOrderByIds(@Param("ids") String[] ids);

	/**
	 * 查询我的订单
	 *
	 * @param orderStatus
	 * @return
	 */
	public List<EdhMyOrderVo> selectEdhMyOrder(@Param("id") String id, @Param("orderStatus") String orderStatus, @Param("returnStatus") String returnStatus);


	/**
	 * 查询微店订单
	 *
	 * @param edhOrder
	 * @return 订单列表
	 */
	public List<EdhMyOrderVo> selectMicroshopList(EdhOrderListDto edhOrder);

	/**
	 * @param id
	 * @description: 根据子订单id查询当前订单详情
	 * @return:
	 * @author: 梁东宸
	 * @time: 2020/9/5 4:10 下午
	 */
	public EdhDetailsOrderVo selectDetailsOrder(String id);

	/**
	 * 获取订单销售情况
	 */
	public Map<String, Object> getOrderFulfillment(@Param("userId") Long userId);

	/**
	 * 首页待处理事务数据
	 */
	public Map<String, Object> pendingTransaction(@Param("userId") Long userId);

	/**
	 * 首页订单总数统计图数据 - 今日
	 */
	public List<Map<String, Object>> totalOrdersToday(@Param("userId") Long userId);

	/**
	 * 首页订单总数统计图数据 - 本周
	 */
	public List<Map<String, Object>> totalOrdersThisWeek(@Param("userId") Long userId);

	/**
	 * 首页订单总数统计图数据 - 本月
	 */
	public List<Map<String, Object>> totalOrdersThisMonth(@Param("userId") Long userId);

	/**
	 * 首页订单销售额统计图数据 - 今日
	 */
	public List<Map<String, Object>> totalOrdersSaleToday(@Param("userId") Long userId);

	/**
	 * 首页订单销售额统计图数据 - 本周
	 */
	public List<Map<String, Object>> totalOrdersSaleThisWeek(@Param("userId") Long userId);

	/**
	 * 首页订单销售额统计图数据 - 本月
	 */
	public List<Map<String, Object>> totalOrdersSaleThisMonth(@Param("userId") Long userId);


	/**
	 * 首页订单总数对比
	 */
	public Map<String, Object> totalOrderComparison(@Param("userId") Long userId);

	/**
	 * 首页订单销售额对比
	 */
	public Map<String, Object> totalOrderSalesComparison(@Param("userId") Long userId);

	/**
	 * @param edhBatchShip
	 * @description: 批量发货
	 * @return: Integer
	 * @author: 梁东宸
	 * @time: 2020/9/15 3:13 下午
	 */
	public Integer batchShip(EdhOrder edhBatchShip);

	/**
	 * @param userId,id,remarks 操作者用户id和订单id和操作备注
	 * @description: 添加操作记录
	 * @return:
	 * @author: 梁东宸
	 * @time: 2020/9/15 5:35 下午
	 */
	public Integer addOrderLog(@Param("userId") Long userId, @Param("id") Long id, @Param("remarks") String remarks);

	/**
	 * @param id
	 * @description: 根据id查询订单详情
	 * @return: EdhOrderDetailsVo
	 * @author: 梁东宸
	 * @time: 2020/9/15 8:37 下午
	 */
	public EdhOrderDetailsVo selectOrderDetailsById(@Param("id") String id);

	/**
	 * @param edhOrder
	 * @description: 查询当前已完成付款未发货的
	 * @return: List<EdhOrderDetailsVo>
	 * @author: 梁东宸
	 * @time: 2020/9/17 9:45 上午
	 */
	public List<EdhOrderDetailsVo> selectNotShipOrder(EdhOrder edhOrder);

	/**
	 * @param ids
	 * @description: 批量修改上架状态
	 * @return: Integer
	 * @author: 梁东宸
	 * @time: 2020/9/17 1:39 下午
	 */
	public Integer printShip(@Param("ids") Long[] ids);

	/**
	 * @param
	 * @description: 查询未付款, 和已付款的
	 * @return: List<EdhOrder>
	 * @author: 梁东宸
	 * @time: 2020/9/17 5:51 下午
	 */
	public List<EdhOrder> queryAllOrderStatus();

	/**
	 * @param edhOrder
	 * @description: 修改状态
	 * @return: Integer
	 * @author: 梁东宸
	 * @time: 2020/9/18 9:35 上午
	 */
	public Integer updateOrderStatus(EdhOrder edhOrder);

	/**
	 * 根据主订单修改付款的订单失败
	 *
	 * @param outTradeNo
	 * @return
	 */
	public Integer updateOrderStatusFailure(String outTradeNo);

	Integer updateOrdersStatusToCancel(@Param("ids") String[] ids);

	EdhBill generatingLeaderBills(@Param("orderId") Long orderId);

	EdhBill generatingBossBills(@Param("orderId") Long orderId);

}
